#ifndef _CUDA_MAP_CUH_
#define _CUDA_MAP_CUH_

namespace cuda_map{
    /* map supported */
    const int NONE = 0;
    
    /* 
       map s by some map method,
       map_method is the method of mapping,

       is_valid specifies whether the input is valid, e.g in bound 

    */
    template<int map_method>
    __device__ void __map( float &s, bool is_valid );

    /* the default method is do nothing */
    template<>
    __device__ void __map<NONE>( float &s, bool is_valid ){
        
    }

};
/* map method speically designed for rbm */
#include "cuda_map_rbm.cuh"

#endif
